/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pap.pickapartner;

import java.util.ArrayList;
import java.util.Iterator;

public class GrupoCarona {
    
    private ArrayList<Usuario> usuarios;
    private Usuario motorista;

    public GrupoCarona(ArrayList<Usuario> usuarios, Usuario motorista) {
        this.usuarios = usuarios;
        this.motorista = motorista;
    }
    
    public GrupoCarona(ArrayList<Usuario> usuarios) {
        this.usuarios = usuarios;
        this.permutar();
    }

    public Usuario getMotorista() {
        return motorista;
    }

    public void setMotorista(Usuario motorista) {
        this.motorista = motorista;
    }

    public ArrayList<Usuario> getUsuarios() {
        return usuarios;
    }

    public void setUsuarios(ArrayList<Usuario> usuarios) {
        this.usuarios = usuarios;
    }
    
    public ArrayList<Usuario> getCaroneiros(){
        ArrayList<Usuario> clonada = (ArrayList<Usuario>)usuarios.clone();
        clonada.remove(motorista);
        return clonada;
    }
    
    public void permutar(){
        int ultimo =usuarios.size()-1;
        Usuario menorPontos = this.getCaroneiros().get(ultimo);
        for(int i=ultimo-1; i>=0; i--){
            if(this.getCaroneiros().get(i).getPontos() < menorPontos.getPontos())
                menorPontos = this.getCaroneiros().get(i);
        }
        this.motorista = menorPontos;
    }
    
    public int tamanhoMaximo() {
        Iterator<Usuario> usuariosIt = usuarios.iterator();
        int min = usuariosIt.next().maxVeiculosVagas();
        while(usuariosIt.hasNext()) {
            int nextVagas = usuariosIt.next().maxVeiculosVagas();
            if(min > nextVagas)
                min = nextVagas;
        }
        return min + 1;
    }
    
    public boolean estaFechado() {
        return (this.usuarios.size() == tamanhoMaximo());
    }
    
    public static void main(String[] args) {
        
        ArrayList<Usuario> users = new ArrayList<Usuario>();
        
        users.add(new Usuario("Carlos", "123", "aks@askj.dsc.upe.br", "09187209", new Localizacao("(23.123,-89)", "Piedade"), new Agenda(), new ArrayList<Veiculo>()));
        users.add(new Usuario("Lost", "12343", "lost@askj.dsc.upe.br", "09874455", new Localizacao("(23.123,-80)", "Boa Viagem"), new Agenda(), new ArrayList<Veiculo>()));
       
        GrupoCarona grupo = new GrupoCarona(users);
        
        System.out.println(grupo.getMotorista());
    
        
    }

    

}
